#ifndef __TcpConnection_hpp__
#define __TcpConnection_hpp__

#include "SocketIO.hpp"
#include "Socket.hpp"
#include "InetAddress.hpp"

namespace xww
{   

class TcpConnection
{
public:
    TcpConnection(int fd);//构造函数，接受一个文件描述符fd
    
    string receive();//接收消息
    void send(const string& msg);//发送消息
    
    bool isClosed() const;//判断连接是否已关闭
    void shutdown();//关闭连接的写端
    string toString() const;//获取连接的字符串表示形式

private:
    InetAddress getLocalAddress() const;//获取本地地址
    InetAddress getPeerAddress() const;//获取对端地址

private:
    Socket _sock; //Socket类用于封装socket文件描述符
    SocketIO _sockIO; //SocketIO类用于封装socket的读写操作
    InetAddress _localAddr; //本地地址
    InetAddress _peerAddr; //对端地址
};

}//end of namespace xww

#endif